package com.navi;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.navi.entity.BisData;
import com.navi.util.JacksonUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.tomcat.jni.File;
import org.junit.Test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.OpenOption;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.nio.file.StandardOpenOption.APPEND;

/**
 * Created by admin on 2017/9/19.
 */
public class Json2File {

    @Test
    public void testForeach() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        list.forEach(num -> {
            if (num == 3) return;
            System.out.println(num);
        });
    }

    @Test
    public void genericJsons() {

//        final List<JSONObject> jsonObjectList = jsonList.stream().map(json -> (JSONObject) JSONObject.parse(json)).collect(Collectors.toList());
//
//        jsonObjectList.forEach(System.out::println);


//        final List<String> columnList = jsonObjectList.stream()
//                .map(jsonObject -> jsonObject.entrySet().stream().map(entry -> entry.getKey()))
//                .flatMap(p -> p).distinct().collect(Collectors.toList());
//
//        columnList.forEach(System.out::println);


//        jsonList.forEach(json -> {
//                    try {
//                        Files.write(Paths.get("/opt/test.txt"), (json + "\n").getBytes(), APPEND);
//
//
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//        );


    }

    @Test
    public void testArrayJson() {
        List<BisData> bisDataList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            BisData bisData = new BisData();
            bisData.setUnq_seq_id(i + "");
            bisData.setData_seq_id(i + "");
            bisData.setData_cate("CATE");
            bisData.setData_id(String.format("%04d", i + 1));
            bisData.setData_item("item");
            bisData.setData_ext("ext");
            bisData.setExt_1("ext1");
            bisData.setExt_2("ext2");
            bisData.setExt_3("ext3");
            bisData.setExt_4("ext4");
            bisData.setExt_5("ext5");
            bisDataList.add(bisData);
        }
        testBothJson(JacksonUtil.toJSONStr(bisDataList));
    }

    @Test
    public void testSingleJson() {
        BisData bisData = new BisData();
        bisData.setData_cate("CATE");
        bisData.setData_item("item");
        bisData.setData_ext("ext");
        bisData.setExt_1("ext1");
        bisData.setExt_2("ext2");
        bisData.setExt_3("ext3");
        bisData.setExt_4("ext4");
        bisData.setExt_5("ext5");

        testBothJson(JacksonUtil.toJSONStr(bisData));
    }

    public void testBothJson(String strJson) {
        System.out.println(strJson);
        if (StringUtils.startsWith(strJson, "{")) {
            JSONObject obj = (JSONObject) JSONObject.parse(strJson);
            System.out.println(obj);
        } else if (StringUtils.startsWith(strJson, "[")) {
            JSONArray arr = JSONArray.parseArray(strJson);
            arr.forEach(System.out::println);
        }
    }
}
